home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / CONTRSRC.ZIP / SRC / TYPEONE / WARNING.ASM < prev   
Encoding:
Assembly Source File  |  1994-10-05  |  8.2 KB  |  357 lines

  1.  
  2. ;***********************************************************
  3. ; Warning - Only ASM !!!! (C) 1994 Type One / TFL-TDV Prod.
  4. ;***********************************************************
  5.  
  6. INCLUDE PDFIK.INC ; DataFile Manager
  7. INCLUDE VIDEO.INC ; Flamoot VGA SetUp
  8.  
  9. ;-----------------------------------------
  10. ; Déclaration modèle mémoire
  11. .386
  12. DGROUP GROUP _DATA,_BSS
  13. WARN_TEXT  SEGMENT DWORD PUBLIC USE16 'CODE'
  14.            ASSUME CS:WARN_TEXT,DS:DGROUP
  15. WARN_TEXT  ENDS
  16. _DATA  SEGMENT DWORD PUBLIC USE16 'DATA'
  17. _DATA  ENDS
  18. _BSS   SEGMENT DWORD PUBLIC USE16 'BSS'
  19. _BSS   ENDS
  20. ;-----------------------------------------
  21.  
  22. _DATA SEGMENT  
  23.  
  24. ;-- donnees pattern --
  25. EXTRN _Datafile  : BYTE
  26. EXTRN _OfsinDta  : DWORD
  27. Picname   BYTE 'warning.raw',0
  28. Picparam  PARAM_STRUC<2,DGROUP,OFFSET _Datafile,OFFSET Picname,0,0,0,,,0>
  29.  
  30. EXTRN _Expo    : WORD
  31. EXTRN _ExpoEnd : WORD
  32.  
  33. EXTRN _BlackPal: BYTE
  34. EXTRN _WhitePal: BYTE
  35.  
  36. _DATA ENDS
  37.  
  38. ; données non initialisées !!!
  39. _BSS SEGMENT
  40.  
  41. GastonPal DB 768 DUP(?)
  42.  
  43. EVEN
  44. PicSeg   WORD ?        ; ptr vers segment pattern
  45. FadeFlag WORD ?        ; flag pour fading
  46.  
  47. EXTRN _TmpPal: BYTE
  48.  
  49. _BSS ENDS 
  50.  
  51. WARN_TEXT SEGMENT
  52.      PUBLIC _PutWarning
  53.      PUBLIC _EndWarning
  54.      EXTRN _WaitVBL: FAR 
  55.      EXTRN _AveragePAL : FAR
  56.  
  57. ;---- MACROs ----
  58.  
  59. VSYNC MACRO          ; Om de VBL te wachten...
  60.       call _WaitVBL
  61.       ENDM
  62.  
  63. STARTUP MACRO        ; MicroSoft Syntax.....
  64.         mov ax,DGROUP
  65.         mov ds,ax
  66.         ENDM
  67.  
  68. MPUSH   MACRO reg1:REQ,reg2:VARARG   ; Vive Y.Roggeman/Greg & ses Macros
  69.         push reg1                    ; recursives !!!!!!! yahouuuuu !!!
  70.         IFNB <reg2>
  71.         MPUSH reg2
  72.         ENDIF
  73.         ENDM
  74.  
  75. MPOP    MACRO reg1:REQ,reg2:VARARG   ; bis bis !!!
  76.         IFNB <reg2>                  ; type brol = record....
  77.         MPOP reg2                    ; donc ça fait 20 bytes !!!
  78.         ENDIF                        ; donc 1 word ....
  79.         pop reg1                     ; brol je dis struct !!!
  80.         ENDM
  81.  
  82.  
  83. ; Point d'entrée de l'intro !!!!!
  84. ;---------------------------------
  85. ALIGN
  86. EVEN
  87. _PutWarning PROC FAR
  88.  
  89.          push    bp                  ; bâtit le cadre de pile
  90.          mov     bp,sp
  91.          
  92.          pushad
  93.          MPUSH ds,es,fs,gs
  94.  
  95.          STARTUP
  96.          push    m320x200x256p
  97.          call    _SetVGA
  98.          add     sp,2 
  99.  
  100.          STARTUP
  101. ;--------------------------------------
  102.          call    Warning             ; !!!!! put G.Lagaffe !!!!!
  103. ;--------------------------------------
  104.  
  105.          MPOP ds,es,fs,gs
  106.          popad
  107.          nop
  108.  
  109.          leave                             ; restore stack
  110.                                            ; mov sp,bp + pop bp
  111.          retf                              ; C/C++ retirera le param 
  112.  
  113. _PutWarning ENDP
  114.  
  115. ALIGN
  116. EVEN
  117. ;-------- Fade G.Lagaffe !!! ---------
  118. _EndWarning PROC FAR
  119.  
  120.          push    bp                  ; bâtit le cadre de pile
  121.          mov     bp,sp
  122.          
  123.          pushad
  124.          MPUSH ds,es,fs,gs
  125.  
  126.          STARTUP
  127.  
  128.          push    es
  129.          push    ds
  130.          pop     es
  131.          mov     ax,1017h
  132.          xor     bx,bx
  133.          mov     cx,256
  134.          mov     dx,OFFSET GastonPal   ; Get current pal !!!!
  135.          int     10h
  136.          pop     es
  137.  
  138.          mov     FadeFlag,0
  139.  
  140. ToWhite: 
  141.  
  142.          cmp     FadeFlag,255
  143.          jae     @F
  144.          mov     ax,FadeFlag          ; average MyPal-White
  145.          push    ax
  146.          push    ds
  147.          push    OFFSET _TmpPal
  148.          push    ds
  149.          push    OFFSET GastonPal
  150.          push    ds
  151.          push    OFFSET _WhitePal
  152.          call    _AveragePAL
  153.          add     sp,7*2
  154.          mov     dx,3dah
  155. lbl1:    in      al,dx
  156.          test    al,8
  157.          jz      lbl1
  158.          call    DoPal
  159. lbl2:    in      al,dx
  160.          test    al,8
  161.          jnz      lbl2
  162.          add     FadeFlag,8 
  163.  
  164.          jmp     ToWhite
  165. @@:      mov     FadeFlag,0 
  166.  
  167. ToBlack: 
  168.  
  169.          cmp     FadeFlag,255
  170.          jae     @F
  171.          mov     ax,FadeFlag          ; average MyPal-White
  172.          push    ax
  173.          push    ds
  174.          push    OFFSET _TmpPal
  175.          push    ds
  176.          push    OFFSET _WhitePal
  177.          push    ds
  178.          push    OFFSET _BlackPal
  179.          call    _AveragePAL
  180.          add     sp,7*2
  181.          mov     dx,3dah
  182. llbl1:   in      al,dx
  183.          test    al,8
  184.          jz      llbl1
  185.          call    DoPal
  186. llbl2:   in      al,dx
  187.          test    al,8
  188.          jnz     llbl2
  189.          add     FadeFlag,8 
  190.  
  191.          jmp     ToBlack
  192.  
  193. @@:
  194.          MPOP ds,es,fs,gs
  195.          popad
  196.          nop
  197.  
  198.          leave                             ; restore stack
  199.                                            ; mov sp,bp + pop bp
  200.          retf                              ; C/C++ retirera le param 
  201.  
  202. _EndWarning ENDP
  203.  
  204. ALIGN
  205. EVEN
  206. DoPal PROC NEAR
  207.  
  208.     MPUSH ax,cx,dx,si
  209.  
  210.     mov   dx,3c8h
  211.     xor   al,al      ; begin by color 0
  212.     out   dx,al
  213.     inc   dl            
  214.  
  215.     mov   si,OFFSET _TmpPal
  216.     mov   cx,768
  217.     rep   outsb
  218.  
  219.     MPOP  ax,cx,dx,si
  220.     ret
  221.  
  222. DoPal ENDP
  223.  
  224. ;==============================================================================
  225. ;============================ Put Warning part ================================
  226. ;==============================================================================
  227.  
  228. ALIGN
  229. EVEN
  230. Warning PROC NEAR
  231.  
  232. ;------------------------------------------------------------------------------
  233.          pushad
  234.  
  235.          mov     eax,_OfsinDta         ; OFFSET in Datafile
  236.          mov     Picparam.OfsInPdf,eax
  237.          mov     ax,DGROUP             ; prepare for PDFIK call 
  238.          mov     es,ax 
  239.          mov     bx,OFFSET Picparam  
  240.          pusha 
  241.          call    PDFIK_ASM             ; call function 2 (extract+alloc)
  242.          popa
  243.          mov     ax,Picparam.BufSeg ; where is the file in mem ?  
  244.          mov     Picseg,ax
  245.  
  246.          push    ds
  247.          push    es
  248.          mov     ax,Picseg
  249.          mov     ds,ax                 ; 32 bytes for Alchemy Header
  250.          mov     si,32                 ; palette offset 
  251.          mov     es,ax
  252.          mov     di,32
  253.  
  254.          mov     cx,768                ; 256*3 components
  255. @@:      lodsb
  256.          shr     al,2                  ; 8 to 6 bits conversion
  257.          stosb
  258.          dec     cx
  259.          jnz     @B
  260.  
  261.          mov     ax,1012h              ; Set Palet
  262.          xor     bx,bx
  263.          mov     dx,32
  264.          mov     cx,256
  265.          int     10h
  266.  
  267.          pop     es
  268.          pop     ds
  269.  
  270. ;---------------
  271.  
  272. ; change Video base 
  273.         mov     dx,3d4h
  274.         mov     bx,320*200/4
  275.         mov     al,0ch
  276.         mov     ah,bh
  277.         out     dx,ax
  278.         mov     al,0dh
  279.         mov     ah,bl
  280.         out     dx,ax
  281.         VSYNC         
  282.  
  283. ; put picture onto screen !!!!!
  284.         push    ds
  285.         push    es
  286.         mov     ax,Picseg
  287.         mov     ds,ax
  288.         mov     si,800                ; skip Alchemy header
  289.         mov     ax,0a000h
  290.         mov     es,ax
  291.  
  292.         mov     dx,3c4h
  293.         mov     al,02h                ; bitplane sel. reg.
  294.         out     dx,al
  295.         inc     dl  
  296.  
  297.         i=0
  298.         REPT    4
  299.         xor     di,di
  300.         mov     al,(1 SHL i)
  301.         out     dx,al
  302.         mov     cx,320*200/4
  303. @@:     lodsb
  304.         add     si,3
  305.         stosb
  306.         dec     cx
  307.         jnz     @B
  308.         sub     si,320*200-1
  309.         i=i+1
  310.         ENDM
  311.  
  312.         pop     es
  313.         pop     ds
  314.                   
  315.         mov     si,OFFSET _Expo       ; exponential !!!
  316. @@:     VSYNC
  317.         lodsw
  318.         sub     ax,400
  319.         neg     ax
  320.         sar     ax,1
  321.         mov     bx,80
  322.         mul     bx
  323.         mov     bx,ax
  324.         mov     dx,3d4h               ; new position
  325.         mov     al,0ch
  326.         mov     ah,bh
  327.         out     dx,ax
  328.         mov     al,0dh
  329.         mov     ah,bl
  330.         out     dx,ax
  331.  
  332.         cmp     si,OFFSET _ExpoEnd
  333.         jne     @B
  334.  
  335.  
  336. ;----- EXIT -----
  337.  
  338.         mov     ax,Picseg             ; segment to free
  339.         mov     es,ax
  340.         mov     ah,49h                ; MFREE
  341.         int     21h
  342.  
  343.         popad
  344.         nop
  345.         ret
  346.  
  347. Warning ENDP
  348.  
  349. ;==============================================================================
  350.  
  351. WARN_TEXT ENDS
  352.  
  353.      END
  354.  
  355.  
  356.  
  357.